package com.itheima.d6_generic;

import java.util.ArrayList;

/**
 * 泛型支持的类型以及包装类
 *
 * 1.把数值类型转成字符串类型  String rs = Integer.toString(); 注意：toString()方法既有静态也有实例方法，既可以用类名调用，也可以用对象名调用
 * 2.把字符串类型转成数值类型  （1）int i1 = Integer.parseInt(); （2）int i2 = Integer.valueOf();
 */
public class GenericDemo6 {
    public static void main(String[] args) {
        //泛型支持的类型 只能是引用数据类型
        //ArrayList<int> list = new ArrayList<int>();


        //基本数据类型 具有包装类 可以变成引用数据类型
        //int -> Integer   char -> Character   double -> Double ... ...
        Integer it1 = Integer.valueOf(10);
        Integer it2 = Integer.valueOf(10);
        //int -128~127 从缓存里直接拿对象 而不是创建对象
        System.out.println(it1 == it2);//true


        Integer it3 = Integer.valueOf(200);
        Integer it4 = Integer.valueOf(200);
        //int 200 不在缓存里 需要new
        System.out.println(it3 == it4);//false


        //自动装箱
        Integer it5 = 100;
        Integer it6 = 100;
        System.out.println(it5 == it6);//数值类型直接比较值大小

        //自动拆箱
        int i1 = it5;
        System.out.println(i1);


        //自动装箱
        ArrayList<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(20);
        list.add(30);

        //自动拆箱
        int i =  list.get(0);
        System.out.println( i);

        System.out.println("------------------------");
        //包装类新增的功能
        //数值类型转字符串
        int k = 23;
        //静态方法  类名调用
        String rs1 = Integer.toString(23);
        System.out.println(rs1);
        //实例方法 对象调用
        Integer k2 = 34;
        String rs2 = k2.toString();
        System.out.println(rs2 + 1);
        Integer k3 = 44;
        String rs3 = k3 + "";
        System.out.println(rs3 + 1);
        System.out.println("------------------------");

        //把字符型转为数值类型
        String str = "123";
        int rs4 = Integer.parseInt(str);
        System.out.println(rs4 + 1);
        Integer rs5 = Integer.valueOf(str);
        System.out.println(rs5 + 6);
        System.out.println("------------------------");


        String str2 = "99.5";
        double rs6 = Double.valueOf(str2);
        System.out.println(rs6+1);

        double rs7 = Double.parseDouble(str2);
        System.out.println(rs7 + 11);
    }
}
